package com.ruoyi.mes.service.impl;

import java.util.List;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.mes.domain.ProBomMaterial;
import com.ruoyi.mes.utils.CodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.mes.mapper.ProBomMapper;
import com.ruoyi.mes.domain.ProBom;
import com.ruoyi.mes.service.IProBomService;
import com.ruoyi.mes.mapper.ProDesignMapper;
import com.ruoyi.mes.mapper.ProBomMaterialMapper;

/**
 * BOM管理Service业务层处理
 * 
 * @author CFL
 * @date 2024-04-28
 */
@Service
public class ProBomServiceImpl implements IProBomService 
{
    @Autowired
    private ProBomMapper proBomMapper;
    @Autowired
    private ProDesignMapper proDesignMapper;

    @Autowired
    private ProBomMaterialMapper proBomMaterialMapper;
    /**
     * 查询BOM管理
     * 
     * @param id BOM管理主键
     * @return BOM管理
     */
    @Override
    public ProBom selectProBomById(Long id)
    {
        return proBomMapper.selectProBomById(id);
    }

    /**
     * 查询BOM物料表
     *
     * @param id BOM管理主键
     * @return BOM管理
     */
    @Override
    public List<ProBomMaterial> selectProBomMat(Long id)
    {
        System.out.println(id+"亻尔女子end222:"+proBomMaterialMapper.selectProBomMat(id));
        return proBomMaterialMapper.selectProBomMat(id);
    }

    /**
     * 修改-根据产品id查询产品BOM物料表
     *
     * @param proId BOM管理主键
     * @return BOM管理
     */
    @Override
    public List<ProBomMaterial> selectMaterialById(Long proId)
    {
        return proBomMaterialMapper.selectMaterialById(proId);
    }

    /**
     * 查询BOM管理列表
     * 
     * @param proBom BOM管理
     * @return BOM管理
     */
    @Override
    public List<ProBom> selectProBomList(ProBom proBom)
    {
        return proBomMapper.selectProBomList(proBom);
    }

    /**
     * 新增BOM管理
     * 
     * @param proBom BOM管理
     * @return 结果
     */
    @Override
    public int insertProBom(ProBom proBom)
    {
        BaseController baseController = new BaseController();
        String username = baseController.getUsername();
        // BOM编码
        String bomSn = CodeUtils.BomCodeCreat();
        // 设置创建者和创建时间
        proBom.setCreatedBy(username);
        proBom.setCreatedTime(DateUtils.getNowDate());
        proBom.setBomSn(bomSn);
        proBomMapper.insertProBom(proBom);
        //在BOM新增完后，再更新产品设计表里的BOMid字段值，否则BOMid会为空
        proDesignMapper.updateProDesignBomId(proBom);
        //在BOM物料表中添加对应数据
        proBomMaterialMapper.insertProBomMat(proBom);
        return 1;
    }

    /**
     * 修改BOM管理
     * 
     * @param proBom BOM管理
     * @return 结果
     */
    @Override
    public int updateProBom(ProBom proBom)
    {
        proBomMapper.updateProBom(proBom);
        //先删后增，也叫修改
        proBomMaterialMapper.deleteProBomMat(proBom);
        proBomMaterialMapper.insertProBomMat(proBom);
        return 1;
    }

    /**
     * 批量删除BOM管理
     * 
     * @param ids 需要删除的BOM管理主键
     * @return 结果
     */
    @Override
    public int deleteProBomByIds(Long[] ids)
    {
        return proBomMapper.deleteProBomByIds(ids);
    }

    /**
     * 删除BOM管理信息
     * 
     * @param id BOM管理主键
     * @return 结果
     */
    @Override
    public int deleteProBomById(Long id)
    {
        return proBomMapper.deleteProBomById(id);
    }
}
